package br.medmark.servico;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import br.com.medmark.model.hibernate.Clinica;
import br.com.medmark.model.hibernate.Usuario;
import br.com.medmark.model.hibernate.dao.AdministradorDAO;
import br.com.medmark.model.hibernate.dao.ClinicaDAO;
import br.com.medmark.model.hibernate.dao.UsuarioDAO;
import br.medmark.util.Constantes;


public class AdministradorServico implements Serializable {
	
	private static final long serialVersionUID = -1755857773099028373L;

	@Inject
	private AdministradorDAO daoAdm = AdministradorDAO.getInstance();
	
	private ClinicaDAO daoCli = ClinicaDAO.getInstance();
	
	private UsuarioDAO daoUser = UsuarioDAO.getInstance();
	
	public final static String paginaInicialAdministrador = "/pages/indexAdm?faces-redirect=true";
	private static AdministradorServico administradorServico;
	
	private AdministradorServico(){
		
	}
	
	public static AdministradorServico getInstance(){
		
		if ( administradorServico == null) {
			administradorServico = new AdministradorServico();
		}
	
		return administradorServico;
		
	}
	
	public String exibeTelaInicial(){
		return paginaInicialAdministrador;
	}

	public void criaClinica(String nomeResponsavel, String cpfResponsavel,
			String nomeClinica, String cnpjClinica, String endereco,
			String numero, String complemento, String bairro, String cidade,
			String estado, String telefone1,String telefone2,
			String telefone3,String login, String senha) {
		
		Clinica clinica = new Clinica();
		
		clinica.setNomeResponsavel(nomeResponsavel);
		clinica.setCpfResponsavel(cpfResponsavel);
		clinica.setNome(nomeClinica);
		clinica.setCnpjClinica(cnpjClinica);
		clinica.setRua(endereco);
		clinica.setNumero(numero);
		clinica.setComplemento(complemento);
		clinica.setBairro(bairro);
		clinica.setCidade(cidade);
		clinica.setEstado(estado);
		clinica.setTelefone1(telefone1);
		clinica.setTelefone2(telefone2);
		clinica.setTelefone3(telefone3);
		clinica.setLogin(login);
		clinica.setSenha(senha);
		clinica.setDesativada("N");
		Usuario user = new Usuario();
		
		
		user.setLogin(login);
		user.setSenha(senha);
		user.setTipo_usuario(Constantes.CODIGO_CLINICA);
		
		try {
			daoCli.save(clinica);
			daoUser.save(user);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
	}
	
	public List<Clinica> listaClinicas(){
		
		List<Clinica> clinicas = new ArrayList<Clinica>();
		
		clinicas = daoCli.listarObjetos();
		
		
		return clinicas;
		
	}

	public void salvarClinica(Clinica clinica) {
		
		try {
			daoCli.save(clinica);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public void removerClinica(Clinica clinica) {
		try {
			daoCli.delete(clinica);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}
